﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DATipoRoca:Base
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de tipos de roca
        /// </summary>
        /// <returns></returns>
        public List<TipoRoca> ListarTipoRoca()
        {
            return this.Context.TipoRoca.ToList();
        }
        /// <summary>
        /// Método para insertar un tipo de roca
        /// </summary>
        /// <param name="tiporoca"></param>
        /// <returns></returns>
        public int InsertarTipoRoca(TipoRoca tiporoca)
        {
            this.Context.TipoRoca.AddObject(tiporoca);
            this.Context.SaveChanges();
            return tiporoca.CodigoTipoRoca;
        }
        /// <summary>
        /// Método para modificar un tipo de roca
        /// </summary>
        /// <param name="tiporoca"></param>
        public void ModificarTipoRoca(TipoRoca tiporoca)
        {
            this.Context.TipoRoca.Attach(tiporoca);
            this.Context.ObjectStateManager.ChangeObjectState(tiporoca, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para eliminar tipo de roca
        /// </summary>
        /// <param name="tiporoca"></param>
        public void EliminarTipoRoca(TipoRoca tiporoca)
        {
            this.Context.TipoRoca.Attach(tiporoca);
            this.Context.TipoRoca.DeleteObject(tiporoca);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método que busca por nombre tipo de roca
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<TipoRoca> BuscarTipoRoca(string nombre)
        {
            return this.Context.TipoRoca.Where(x => x.Descripcion.StartsWith(nombre)).ToList();
        }
        /// <summary>
        /// Método que devuelve tipo de roca por codigo
        /// </summary>
        /// <param name="codigoTipoRoca"></param>
        /// <returns></returns>
        public TipoRoca ObtenerTipoRoca(int codigoTipoRoca)
        {
            return this.Context.TipoRoca.Where(x => x.CodigoTipoRoca.Equals(codigoTipoRoca)).FirstOrDefault();
        }
        #endregion
    }
}
